window.CommonUtils = (function($, module) {
	/**
	 * 根据数据按照name规则填充form中的标准HTML输入框(包括input checkbox textarea,select),
	 * <p>
	 * 注意form中的checkbox需要预先填写被勾选后的值 <code><input type="checkbox"
	 * name="sopTeamInfo.isOwner" value="1"></code>
	 * "1" 就是预期需要与sopTeamInfo.isOwner比较的值,如果sopTeamInfo.isOwner的值是"1",则checkbox被勾选
	 * 
	 * @param form
	 *            form的id或jquery选择器获取到的form元素
	 * @param data
	 *            需要填充到form中的数据 json对象
	 * @param profix
	 *            前缀,输入框的名称的"."之前的部分,如果没有则不填
	 */
	function fillForm(form, data, profix) {
		var _$form = typeof form == "string" ? $("#" + form) : form;
		var _profix;
		// 如果用户填入前缀,则使用前缀构造名称,如果未填,名称前缀为""
		if (profix) {
			_profix = profix + ".";
		} else {
			_profix = "";
		}

		for ( var index in data) {
			var _$input = _$form.find(":input[name='" + _profix + index + "']");
			if (_$input.attr("type") == "checkbox") {
				_$input.attr("checked", _$input.val() == data[index]);
			} else {
				_$input.val(data[index]);
			}
		}
	}

	/**
	 * 序列化dom 中input/select 为对象
	 * 获取下拉框的 html
	 */
	function serializeToObject(form, profix) {
		var _$form = typeof form == "string" ? $("#" + form) : form;
		// 如果用户填入前缀,则使用前缀构造名称,如果未填,名称前缀为""
		var _profix;
		if (profix) {
			_profix = profix + ".";
		} else {
			_profix = "";
		}
		var o = {};
		if (profix) {
			$.each(_$form.find(":input[name^='" + _profix + "']"), function() {
				if (this.name.indexOf(_profix) > -1) {
					var name = this.name.split(_profix)[1];
					if (this.value && this.name) {
						o[name] = this.value;
					}
				}
			});
		} else {
			$.each(_$form.find(":input"),
					function() {
						var name = this.name.indexOf(".") > -1 ? this.name
								.split(".")[1] : this.name;
						if (this.value && this.name) {
							o[name] = this.value;
						}
					});
		}

		return o;
	}
	/**
	 * 往请求地址里面增加参数 ，用于get请求
	 */
	function addParamToUrl(name, value) {
		var baseUrl = location.href.split("?")[0];
		baseUrl += "?";
		//返回当前 URL 的查询部分（问号 ? 之后的部分）。
		var urlParameters = location.search;
		//声明并初始化接收请求参数的对象
		var requestParameters = [];
		//如果该求青中有请求的参数，则获取请求的参数，否则打印提示此请求没有请求的参数
		if (urlParameters.indexOf('?') != -1) {
			//获取请求参数的字符串
			var parameters = decodeURI(urlParameters.substr(1));
			//将请求的参数以&分割中字符串数组
			var parameterArray = parameters.split('&');
			//循环遍历，将请求的参数封装到请求参数的对象之中
			for (var i = 0; i < parameterArray.length; i++) {
				if (parameterArray[i].split('=')[0] != name) {
					requestParameters.push({
						name : parameterArray[i].split('=')[0],
						value : parameterArray[i].split('=')[1]
					});
				}
			}
		}
		baseUrl += name + "=" + value;
		$.each(requestParameters, function(inde, obj) {
			baseUrl += "&" + obj.name + "=" + obj.value;
		});

		return baseUrl;
	}

	/**
	 * ajax请求后台数据
	 */
	function getAjaxData(param, callback) {
		//查询数据
		$.ajax({
			type : param.type,
			url : param.url,
			data : param.data,
			contentType : 'application/json; charset=utf-8',
			async : param.async || true,
			cache : false,
			success : function(data) {
				if (callback) {
					callback(data);
				}
			}
		/*error:function(data) {
			if($("#loader").length > 0){
				alert("后台报错");
				$("#loader").addClass("hidden"); 
			}else{
				alert("后台报错");
			}          	      	
		}*/
		});
	}

	/**
	 * 初始化方法
	 */
	function init() {
		bindEvent();

		adjustJsCompatibility();

		adjustBodyHeight();
	}

	/**
	 * 判断Array是否支持 indexOf
	 */
	function adjustJsCompatibility() {
		if (!Array.prototype.indexOf) {
			Array.prototype.indexOf = function(elt /*, from*/) {
				var len = this.length >>> 0;
				var from = Number(arguments[1]) || 0;
				from = (from < 0) ? Math.ceil(from) : Math.floor(from);
				if (from < 0)
					from += len;
				for (; from < len; from++) {
					if (from in this && this[from] === elt)
						return from;
				}
				return -1;
			};
		}
	}

	/**
	 * 调整浏览器高度
	 */
	function adjustBodyHeight() {
		var h = document.documentElement.clientHeight;
		$(".wrap").css("height", h);
	}

	/**
	 * 绑定事件
	 */
	function bindEvent() {
		//筛选箭头增加点击事件
		var filterDom = $(".select_text");
		var imgDom = $(".up_down");
		imgDom.click(function(data) {
			if (filterDom.is(":hidden")) {
				filterDom.show();
				imgDom.attr('src', '/SMTProject/img/list/select_up.png');
			} else {
				filterDom.hide();
				imgDom.attr('src', '/SMTProject/img/list/select_down.png');
			}
		});

		//筛选按钮增加事件
		$(".btn_search").click(function(data) {
			//分页id
			var pageId = $(".page_area").attr("id");
			//筛选数据获取
			//var paramData = serializeToObject($(".select_text"));
			var paramData = JSON.stringify(serializeToJSON($(".select_text input").serializeArray()));
			//分页参数 增加筛选条件
			$.each(PageUtils._pageParamArr, function() {
				if (this['element'] == pageId) {
					this['data'] = paramData;
				}
			});
			//分页跳转第一页
			PageUtils.pageClick(1, pageId);
		});
		
		//清除筛选条件
		$(".btn_clear").click(function() {
			$(".select_text").find(":input").val("");
			$(".select_text").find("select").prop('selectedIndex', 0);
			//分页id
			var pageId = $(".page_area").attr("id");
			//分页参数 增加筛选条件
			$.each(PageUtils._pageParamArr, function() {
				if (this['element'] == pageId) {
					this['data'] = "";
				}
			});
			//分页跳转第一页
			PageUtils.pageClick(1, pageId);
		});

		//表头空白处 点击全选事件
		$(".checkSelectAll").click(
				function() {
					var selectArr = $(this).parents("table").find(
							"input[type='checkbox']");
					var allSelectflag = true;
					$.each(selectArr, function() {
						if (!this.checked) {
							allSelectflag = false;
						}
					});
					selectArr.prop("checked", !allSelectflag);
				});

	}

	/**
	 * 扩展validate 校验方法
	 */
	function extendValidateMth() {
		//jQuery手机号校验
		jQuery.validator
				.addMethod(
						"isPhone",
						function(value, element) {
							var length = value.length;
							var mobile = /^(((13[0-9]{1})|(01[0-9]{1})|(02[0-9]{1})|(03[0-9]{1})|(04[0-9]{1})|(05[0-9]{1})|(06[0-9]{1})|(07[0-9]{1})|(08[0-9]{1})|(09[0-9]{1})|(15[0-9]{1})|(18[0-9]{1})|(17[0-9]{1}))+\d{8})$/;
							return this.optional(element)
									|| (length == 11 && mobile.test(value));
						}, "请填写正确的手机号码");//可以自定义默认提示信息
	}

	/**
	 * js深度拷贝对象方法
	 */
	function deepCopy(source) {
		var result = {};
		for ( var key in source) {
			result[key] = typeof source[key] === 'object' ? deepCoyp(source[key])
					: source[key];
		}
		return result;
	}
	/**
	 * formatStr 格式化字符
	 */
	function formatStr(str) {
		if (!str) {
			str = "--";
		}
		return str;
	}
	/**
	 * formatStr 格式"1900"
	 */
	function formatTime(str) {
		if (!str || str == "1900-01-01") {
			str = "--";
		}
		return str;
	}
	
	function serializeToJSON(o){ 
	    var obj=new Object(); 
	    $.each(o,function(index,param){ 
	        if(!(param.name in obj)){ 
	            obj[param.name]=param.value; 
	        } 
	    }); 
	    return obj; 
	}
	
	module.serializeToJSON = serializeToJSON;
	module.formatTime = formatTime;
	module.formatStr = formatStr;
	module.fillForm = fillForm;
	module.serializeToObject = serializeToObject;
	module.addParamToUrl = addParamToUrl;
	module.getAjaxData = getAjaxData;
	module.extendValidateMth = extendValidateMth;
	module.deepCopy = deepCopy;
	module.init = init;
	return module;
}($, window.CommonUtils || {}));
$(function() {

	window.alert = function alert(e, callback) {
		$("body")
				.append(
						'<div id="msg_mask"><div id="msg"><div id="msg_top"><img id="msg_img" src="/PRJ812/img/button/hint1.png" />提示信息<span id="close_confirm" class="msg_close">×</span></div><div id="msg_cont">'
								+ e
								+ '</div><div class="msg_close msg_btn" id="msg_clear">确定</div></div></div>');
		//    	$(".msg_close").click(function (){
		//        	$("#msg").remove();
		//        	$("#msg_mask").remove();
		//        });
		$("#msg_clear").click(function() {
			$("#msg").remove();
			$("#msg_mask").remove();
			if (callback) {
				callback();
			}
		});

		$("#msg_cancle").click(function() {
			$("#msg").remove();
			$("#msg_mask").remove();
			if (callback) {
				callback();
			}
		});

		$("#close_confirm").click(function() {
			$("#msg").remove();
			$("#msg_mask").remove();
			if (callback) {
				callback();
			}
		});
	};

	window.confirm = function confirm(e, callback) {
		$("body")
				.append(
						'<div id="msg_mask"><div id="msg"><div id="msg_top"><img id="msg_img" src="/PRJ812/img/button/hint1.png" />提示信息<span id = "close_confirm_windown" class="msg_close">×</span></div><div id="msg_cont">'
								+ e
								+ '</div><div class="msg_close msg_btn" id="msg_cancle">取消</div><div class="msg_close msg_btn" id="msg_clear1">确定</div></div></div>');
		//    	$(".msg_close").click(function (){
		//        	$("#msg").remove();
		//        	$("#msg_mask").remove();
		//        });

		$("#msg_clear1").click(function() {
			$("#msg").remove();
			$("#msg_mask").remove();
			if (callback) {
				callback(true);
			}
		});

		$("#msg_cancle").click(function() {
			$("#msg").remove();
			$("#msg_mask").remove();
			if (callback) {
				callback(false);
			}
		});

		$("#close_confirm_windown").click(function() {
			$("#msg").remove();
			$("#msg_mask").remove();
			if (callback) {
				callback(false);
			}
		});

	};

	CommonUtils.init();
	if (!!window.ActiveXObject || "ActiveXObject" in window) {
		/*取消回退按钮功能*/
		document.onkeydown = check;
	}
	function check() {
		if (!e) {
			var e = window.event;
			if ((e.keyCode || e.which) == 13) {
				setTimeout(function() {
					if ($(".btn_search").length) {
						$(".btn_search").click();
					} else if ($("#searchClick").length) {
						$("#searchClick").click();
					} else if ($("#searchClickGraph").length) {
						$("#searchClickGraph").click();
					} else if ($("#searchClickTable").length) {
						$("#searchClickTable").click();
					}else {
						if ($("#searchClickDay").length && $("#pageDay").hasClass("layui-show")) {
							$("#searchClickDay").click();
						}
						if ($("#searchClickNum").length && $("#pageNum").hasClass("layui-show")) {
							$("#searchClickNum").click();
						}
					}
				}, 100);
			} else if (((event.keyCode == 8) && //BackSpace   
			((event.srcElement.type != "text"
					&& event.srcElement.type != "textarea" && event.srcElement.type != "password") || event.srcElement.readOnly == true))
					|| ((event.ctrlKey) && ((event.keyCode == 78) || (event.keyCode == 82)))
					|| //CtrlN,CtrlR   
					(event.keyCode == 116)) { //F5   
				event.keyCode = 0;
				event.returnValue = false;
			}
			return true;
		}
	}
	;
});

/**
 * 时间格式化
 * example  new Date().format("yyyy-MM-dd hh:mm:ss")
 */
Date.prototype.format = function(format){ 
    var o = {
    "y+" : this.getYear(),//年
    "M+" : this.getMonth()+1, //月 
    "d+" : this.getDate(), //日
    "h+" : this.getHours(), //时
    "m+" : this.getMinutes(), //分
    "s+" : this.getSeconds(), //秒
    "q+" : Math.floor((this.getMonth()+3)/3), //刻
    "S" : this.getMilliseconds() //毫秒
    } 
    
    if(/(y+)/.test(format)) { 
        format = format.replace(RegExp.$1, (this.getFullYear()+"").substr(4 - RegExp.$1.length)); 
    } 
    
    for(var k in o) { 
        if(new RegExp("("+ k +")").test(format)) { 
            format = format.replace(RegExp.$1, RegExp.$1.length==1 ? o[k] : ("00"+ o[k]).substr((""+ o[k]).length)); 
        } 
    } 
    return format; 
};

/*//ie8禁止回退
 function PingBi(){
 var k=window.event.keyCode;
 if(k==8){window.event.keyCode=0;window.event.returnValue=false;return false;}
 }*/

window.PageUtils = (function($, module) {
	var _pageParamArr = [], //分页参数数组,可以有多个分页情况
	_currentPage = {}; //当前页

	/**
	 * 刷新分页页脚信息 用于异步
	 * @param obj 选择元素id  或者 分页信息参数对象
	 * @param page 分页对象
	 */
	function refreshPageInfo(obj, page) {
		if (!obj || !page) {
			return;
		}

		var element = null;
		if (typeof obj == "object") {
			_pageParamArr.push(obj);
			element = obj['element'];
		} else {
			element = obj;
		}
		var _$element = typeof element == "string" ? $("#" + element) : element;
		var begin = 1;
		var end = page['totalPage'];
		_$element.html("");
		if (end == 0) {
			return;
		}

		//当前页
		var current = page['pageNo'];
		_currentPage[element] = current;
		//分页列表
		var pageNoDisp = page['pageNoDisp'];
		var pageNoArr = pageNoDisp.split("|") || [];
		var pageSizeHtml="<select id='pageSize' onchange ='PageUtils.pageClick("+current+",this)' ><option value = '10' "+pageSizeSelect(10,page.pageSize)+" >10</option><option value = '20' "+pageSizeSelect(20,page.pageSize)+">20<option value = '30' "+pageSizeSelect(30,page.pageSize)+">30</option></option><option value = '50' "+pageSizeSelect(50,page.pageSize)+">50</option></select>";
		// 分页汇总记录数 页数 每页条数
		var summaryHtml = "<div class='page_sum'>共<span class='page_number'>"
				+ end + "</span>页&emsp;每页 " + pageSizeHtml
				+ " 条&emsp;共<span class='info_sum'> " + page.totalRecord
				+ " </span>条记录</div>";

		// 分页跳转html
		var jumpPageHtml = "<div class='page_jump'><span>跳转到&emsp;第&nbsp;</span>"
				+ "<input type='text' value='"
				+ current
				+ "' onkeypress='if(event.keyCode==13){PageUtils.jumpPage(this)}'/><span>&nbsp;页&emsp;</span>"
				+ "<button onclick='PageUtils.jumpPage(this)'>Go</button></div>";

		// 分页页码HTML外层
		var pageNumberHtml = "<div class='page-pull-right async-page'>";

		var pageDom = "";
		if (current != 1 && end != 0) {
			pageDom += "<button onclick='PageUtils.pageClick(1,this)'>首页</button>";
			pageDom += "<button onclick='PageUtils.pageClick(" + (current - 1)
					+ ",this)'><<</button>";
		} else {
			pageDom += "<button>首页</button>";
			pageDom += "<button><<</button>";
		}

		$
				.each(
						pageNoArr,
						function(i, index) {
							if (index == 0) {
								pageDom += "<label style='margin-right:3px;font-size: 10px; width: 20px; text-align: center;'>•••</label>";
							} else if (index != current) {
								pageDom += "<button onclick='PageUtils.pageClick("
										+ index
										+ ",this)'>"
										+ index
										+ "</button>";
							} else {
								pageDom += "<button class='select_page'>"
										+ index + "</button>";
							}
						});

		if (current < end && end != 0) {
			pageDom += "<button onclick='PageUtils.pageClick(" + (current + 1)
					+ ",this)'>>></button>";
			pageDom += "<button onclick='PageUtils.pageClick(" + end
					+ ",this)'>尾页</button>";
		} else {
			pageDom += "<button>>></button>";
			pageDom += "<button>尾页</button>";
		}
		//分页HTML = 页数汇总 + 分页跳转 + 分页内容html
		var pageHtml = summaryHtml + jumpPageHtml + pageNumberHtml + pageDom
				+ "</div>";
		_$element.append(pageHtml);
	}
	 /**
     * 
     * 默认选中分页大小
     * 
     * */
    function pageSizeSelect(size,pageSize){
    	if (size==pageSize){
    		return  "selected ='selected'"
    	}else{
    		return ""
    	}
    }
	/**
	 * 分页点击事件处理
	 */
	function pageClick(pNo, object) {
		//分页元素id
		var elementId = typeof object == 'string' ? object : $(object).parent()
				.parent().attr("id");
		var ps =parseInt($("#pageSize").val())||10;
		var param = {};
		$.each(_pageParamArr, function() {
			if (this['element'] == elementId) {
				param = this;
			}
		});

		var params = $.extend(param.data || {}, {
			'pageNo' : pNo ,'pageSize':ps
		});
		if(object.tagName=="SELECT"){
    		params["pageSize"]=parseInt(object.value);
    		};
		//获取数据和 分页对象
		$("#loader").removeClass("hidden");
		CommonUtils.getAjaxData({
			url : param['url'],
			type : 'POST',
			contentType:'appliction/json;charset=utf-8',
			data : param['data'],
			async : 'true'
		}, function(data) {
			if (!data) {
				return;
			}
			//刷新分页信息
			refreshPageInfo(param['element'], data['page']);

			//刷新列表信息  回调函数
			$.each(_pageParamArr, function() {
				var callback = param['callback'];
				if (callback) {
					callback(data);
				}
			});
			$("#loader").addClass("hidden");
		});
	}

	/**
	 * 自定义页面跳转
	 */
	function jumpPage(obj) {
		//如果事件源是按钮 则 取input
		var jumpPageInput = obj.tagName == 'BUTTON' ? $(obj).prevAll("input")
				: $(obj);
		var pageNoStr = jumpPageInput.val();
		//如果文本框是数字则跳转 否则清空
		var pageNo = parseInt(pageNoStr);
		if (pageNo && pageNo > 0) {
			pageClick(parseInt(pageNoStr), obj);
		} else {
			jumpPageInput.val("");
		}
	}

	module.refreshPageInfo = refreshPageInfo;
	module.pageClick = pageClick;
	module.jumpPage = jumpPage;
	module._currentPage = _currentPage;
	module._pageParamArr = _pageParamArr;
	return module;
}($, window.PageUtils || {}));
